package com.collection;

import java.util.HashMap;
import java.util.Objects;

/**
 * Map ： 存放键值对，根据键对象找对应的值对象，键不能重复
 *
 *
 * @author jiangbang
 * @date 2016/5/30
 */
public class MyMap001 {
    MyEntry[] arr = new MyEntry[990];
    int size;

    public void put(Object key, Object value){
        MyEntry e = new MyEntry(key,value);
        //解决键值对重复的处理
        for(int i=0;i<size;i++){
            if(arr[i].key.equals(key)){
                arr[i].value = value;
                return;
            }
        }
        arr[size++] = e;
    }

    public Object get(Object key){
       for(int i=0;i<size;i++){
           if(arr[i].key.equals(key)){
               return arr[i].value;
           }
       }
        return null;
    }

    public void remove(Object key){
        for(int i=0;i<size;i++){
            if(arr[i].key.equals(key)){
                //找到需要删除的值
                int numMoved = size - i - 1;
                if(numMoved > 0){  //如果删除的不是最后一个对象
                    //System.arraycopy(elementData,index+1,elementData,index,numMoved);
                    for(int j=0;j<numMoved;j++){
                        arr[i+1] = arr[i];
                    }
                }
                arr[size] = null;
                size--;
            }
        }
    }

    public boolean containKey(Object key){
        for(int i=0;i<size;i++){
            if(arr[i].key.equals(key)){
                return true;
            }
        }
        return false;
    }

    public boolean containValue(Object value){
        for(int i=0;i<size;i++){
            if(arr[i].value.equals(value)){
                return true;
            }
        }
        return false;
    }

}



class MyEntry{

    Object key;
    Object value;

    public MyEntry( Object key,Object value){
        this.key = key;
        this.value = value;
    }

    public MyEntry(){

    }
}